package com.yckj.day06;

/**
 * TODO  Person类
 *
 * @author shengyuee
 * @version 1.0
 * 2025/7/23 10:16
 */
public class Person {
    // 1. 属性（成员变量）数据域
    // 	成员变量有默认值：byte,short,int 默认值0, long 默认值0L, char 默认值 '\u0000',boolean 默认值 false ，float 默认值0.0f ,double 0.0 ,引用类型默认值null
    String name; // 默认值为null
    /**
     * 年龄
     */
    int age; // 默认值为0
    String sex;
    // 2. 构造方法

    /**
     * 系统默认会提供无参构造方法
     * 如果显示提供有参构造方法后，系统提供的就会失效，所以要手动显示提供无参构造方法
     */
    public Person(){
        System.out.println("无参构造方法");
    }
    /**
     * 构造方法的作用
     * 1. 创建对象
     * 2. 给属性初始化
     *
     * 构造方法没有返回值类型，连void都没有
     * 构造方法中不能有return返回值
     * 构造方法的参数和属性相关，来源于成员变量
     */
    public Person(String name,int age,String sex){
//        System.out.println("带三个参数的构造方法");
        // 给成员变量赋值
        this.name = name;
        // this表示当前对象的引用
        this.age = age;
        this.sex = sex;
    }

    /**
     * 带一个参数的构造方法
     * 构造方法可以重载
     * @param name
     */
    public Person(String name){
        this.name = name;
    }

    //  3. 成员方法,一般方法
    public void sleep(){
        System.out.println("睡觉");
    }
    public void work(){
        System.out.println("工作");
    }
    // 垃圾回收时会默认调用finalize()
    @Override
    protected void finalize() throws Throwable {
        System.out.println("垃圾回收了");
    }
}
